package services

import (
	"github.com/labstack/gommon/log"
	"law_case_api/dto"
	"law_case_api/models"
)

// CreateCaseTask 创建案件任务信息
func (_case CaseService) CreateCaseTask(wzjCaseTask models.WzjCaseTask) (bool, error) {
	if err := db.Create(&wzjCaseTask).Error; err != nil {
		log.Error("CreateCaseTask--创建案件任务信息失败,失败原因：", err)
		return false, err
	}
	return true, nil
}

// UpdateCaseTask 更新案件任务信息
func (_case CaseService) UpdateCaseTask(wzjCaseTask models.WzjCaseTask) (bool, error) {
	if err := db.Where("id=?", wzjCaseTask.TaskCode).
		Select("task_code,case_id,task_type,task_level,task_title,task_create_date,task_end_date,task_create_user,task_create_user_id,task_leader,task_leader_id,task_status").
		Updates(&wzjCaseTask).Error; err != nil {
		log.Error("UpdateCaseTask--更新案件任务信息失败,失败原因：", err)
		return false, err
	}
	return true, nil
}

// GetCaseTaskById 根据任务id获取案件任务详情
func (_case CaseService) GetCaseTaskById(caseId int) (models.WzjCaseTask, error) {
	wzjCaseTask := models.WzjCaseTask{}
	if err := db.Where("id=?", caseId).Limit(1).Find(&wzjCaseTask).Error; err != nil {
		log.Error("GetCaseTaskById--根据任务id获取案件任务详情失败,失败原因：", err)
		return wzjCaseTask, err
	}
	return wzjCaseTask, nil
}

// GetCaseTaskListByCondition 根据登录人信息获取合同列表
func (_case CaseService) GetCaseTaskListByCondition(userId int, caseTaskListReq dto.CaseTaskListReq) ([]models.WzjCaseTask, int64, error) {
	var wzjCaseTasks []models.WzjCaseTask

	tx := db.Where("case_id=?", caseTaskListReq.CaseId).Where("task_type=?", caseTaskListReq.TaskType)
	dataCount := int64(0)
	if err := tx.
		Count(&dataCount).
		Select("task_code,case_id,task_type,task_level,task_title,task_create_date,task_end_date,task_create_user,task_create_user_id,task_leader,task_leader_id,task_status").
		Order("task_create_date desc").
		Find(&wzjCaseTasks).Error; err != nil {
		log.Error("GetCaseTaskListByCreateUserId--查询失败,失败原因：", err)
		return wzjCaseTasks, dataCount, err
	}
	return wzjCaseTasks, dataCount, nil
}
